//第二天错题集
#include<stdio.h>
#include <string.h>
// “\\”中第一个\是转义字符，表示'\';
//'\123'表示一个八进制数；
// '\t'表示水平制表符
int main()
{
	char s[] = "\\123456\123456\t";
	printf("%d\n", strlen(s));
	return 0;
}


//宏只是替换，所以 NUM = (2+1+1)*2+1/2 = 8;
#include <stdio.h>
#define N 2
#define M N + 1
#define NUM (M + 1) * M / 2
int main()
{
	printf("%d\n", NUM);
	return 0;
}



//const 是constant的缩写，本意是不变的意思，const修饰的变量不可以再改变
//const 还可以修饰指针变量，区别在于const位于*的左还是右
//如下分析可得出结论：左定值，右定向，const修饰不变量
#include <stdio.h>
int main()
{
	int c = 10;

	const int a = 10;
	a = 2;
	printf("%d", a);

	//const在*的左边，使得指针变量b所指变量的内容不能改变
	const int* b = &a;
	b = &c;//正确
	*b = c;//错误

	int const* m = &a;
	m = &c;//正确
	*m = c;//错误

	//const在*右边，使得指针变量所指的变量不能改变，只能指定这一个地址
	int* const n = &a;
	*n = 1;//正确
	n = &c;//错误
	return 0;
}

//验证尼科彻斯定理
#include <stdio.h>

int main()
{
	int m = 0;
	while (scanf("%d", &m) != EOF)
	{
		int thefirstnum = m * (m - 1) + 1;
		char arr[10240] = { 0 };
		sprintf(arr, "%d", thefirstnum);
		int i = 0;
		for (i = 1; i < m; i++)
		{
			sprintf(arr, "%s+%d", arr, thefirstnum += 2);
		}
		printf("%s", arr);
	}
	return 0;
}